home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / lib / python2.6 / dist-packages / AppInstall / widgets / AppDescView.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2009-10-12  |  7.3 KB  |  164 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import gtk
  5. from ReleaseNotesViewer import ReleaseNotesViewer
  6. from gettext import gettext as _
  7. import re
  8. import pango
  9. import gobject
  10.  
  11. class AppDescView(ReleaseNotesViewer):
  12.     
  13.     def __init__(self):
  14.         ReleaseNotesViewer.__init__(self)
  15.         self.set_wrap_mode(gtk.WRAP_WORD)
  16.         self.set_pixels_below_lines(3)
  17.         self.set_right_margin(6)
  18.         self.set_left_margin(6)
  19.         atk_desc = self.get_accessible()
  20.         atk_desc.set_name(_('Description'))
  21.  
  22.     
  23.     def hook(self, cache, menu, icons, tooltips, distro):
  24.         self.cache = cache
  25.         self.menu = menu
  26.         self.icons = icons
  27.         self.tooltips = tooltips
  28.         self.distro = distro
  29.  
  30.     
  31.     def show_description(self, item):
  32.         '''Collect and show some information about the package that 
  33.            contains the selected application'''
  34.         details = []
  35.         clean_desc = ''
  36.         short_desc = ''
  37.         version = ''
  38.         desktop_environment = ''
  39.         icons = []
  40.         homepage = ''
  41.         style = self.get_style()
  42.         if self.menu.itemAvailable(item):
  43.             pkg = self.cache[item.pkgname]
  44.             homepage = pkg.homepage
  45.             rough_desc = pkg.description.rstrip(' \n\t')
  46.             first_break = rough_desc.find('\n')
  47.             short_desc = rough_desc[:first_break].rstrip('\n\t ')
  48.             rough_desc = rough_desc[first_break + 1:].lstrip('\n\t ')
  49.             p = re.compile('\\ \\ +', re.MULTILINE)
  50.             rough_desc = p.sub(' ', rough_desc)
  51.             p = re.compile('^(\\s|\\t)*(\\*|0|-)', re.MULTILINE)
  52.             rough_desc = p.sub('\n*', rough_desc)
  53.             p = re.compile('\\n', re.MULTILINE)
  54.             rough_desc = p.sub(' ', rough_desc)
  55.             p = re.compile('\\s\\s+', re.MULTILINE)
  56.             rough_desc = p.sub('\n', rough_desc)
  57.             lines = rough_desc.split('\n')
  58.             for i in range(len(lines)):
  59.                 if lines[i].split() == []:
  60.                     continue
  61.                 
  62.                 first_chunk = lines[i].split()[0]
  63.                 if first_chunk == '*':
  64.                     p = re.compile('\\*\\s*', re.MULTILINE)
  65.                     lines[i] = p.sub('', lines[i])
  66.                     clean_desc += '* %s\n' % lines[i]
  67.                     continue
  68.                 clean_desc += '%s\n' % lines[i]
  69.             
  70.             if not clean_desc:
  71.                 clean_desc = item.comment
  72.             
  73.         else:
  74.             msg = _('%s cannot be installed' % item.name)
  75.             for it in self.cache._cache.FileList:
  76.                 if (it.Component != '' or it.Component == item.component or item.architectures) and self.cache.getArch() not in item.architectures:
  77.                     details.append(_('%s cannot be installed on your computer type (%s). Either the application requires special hardware features or the vendor decided to not support your computer type.') % (item.name, self.cache.getArch()))
  78.                     break
  79.                     continue
  80.             
  81.             if item.channel:
  82.                 details.append(_("%s is available in the third party software channel '%s'. To install it, please click on the checkbox to activate the software channel.") % (item.name, item.channel))
  83.             
  84.         s = ''
  85.         buffer = self.get_buffer()
  86.         buffer.set_text('')
  87.         tag_table = buffer.get_tag_table()
  88.         tag_table.foreach((lambda tag, table: table.remove(tag)), tag_table)
  89.         iter = buffer.get_start_iter()
  90.         pango_context = self.get_pango_context()
  91.         font_desc = pango_context.get_font_description()
  92.         font_size = font_desc.get_size() / pango.SCALE
  93.         emblems = self.distro.get_app_emblems(item, self.cache)
  94.         if short_desc != '':
  95.             tag_name = buffer.create_tag('short-desc', weight = pango.WEIGHT_BOLD)
  96.             buffer.insert_with_tags_by_name(iter, '\n%s' % short_desc, 'short-desc')
  97.             for emblem in emblems:
  98.                 if not emblem[0]:
  99.                     continue
  100.                 
  101.                 image_emblem = gtk.Image()
  102.                 image_emblem.set_from_icon_name(emblem[0], gtk.ICON_SIZE_MENU)
  103.                 image_emblem.set_pixel_size(16)
  104.                 event = gtk.EventBox()
  105.                 for state in [
  106.                     gtk.STATE_NORMAL,
  107.                     gtk.STATE_ACTIVE,
  108.                     gtk.STATE_PRELIGHT,
  109.                     gtk.STATE_SELECTED,
  110.                     gtk.STATE_INSENSITIVE]:
  111.                     event.modify_bg(state, style.base[state])
  112.                 
  113.                 event.add(image_emblem)
  114.                 if emblem[1] != None:
  115.                     self.tooltips.set_tip(event, emblem[1])
  116.                 
  117.                 buffer.insert(iter, ' ')
  118.                 anchor = buffer.create_child_anchor(iter)
  119.                 self.add_child_at_anchor(event, anchor)
  120.                 event.show()
  121.                 image_emblem.show()
  122.             
  123.         
  124.         if clean_desc != '':
  125.             buffer.insert(iter, '\n%s' % clean_desc)
  126.         
  127.         if homepage:
  128.             buffer.insert(iter, _('\nHomepage: %s\n') % homepage)
  129.         
  130.         if version != '':
  131.             buffer.insert(iter, _('Version: %s (%s)') % (version, item.pkgname))
  132.         
  133.         if len(details) > 0:
  134.             for x in details:
  135.                 buffer.insert(iter, '\n%s' % x)
  136.             
  137.         
  138.         buffer.create_tag('maint-status', scale_set = True, scale = pango.SCALE_SMALL, foreground = '#888')
  139.         m = self.distro.get_maintenance_status(item, self.cache)
  140.         buffer.insert_with_tags_by_name(iter, '\n%s' % m, 'maint-status')
  141.  
  142.     
  143.     def show_message(self, header, msg):
  144.         ''' Show a quick introduction to gnome-app-install 
  145.             in the description view'''
  146.         buffer = self.get_buffer()
  147.         buffer.set_text('')
  148.         iter = buffer.get_start_iter()
  149.         tag_header = buffer.get_tag_table().lookup('header')
  150.         if not tag_header:
  151.             tag_header = buffer.create_tag('header', scale = pango.SCALE_LARGE, weight = pango.WEIGHT_BOLD, pixels_above_lines = 6)
  152.         
  153.         if header:
  154.             buffer.insert_with_tags(iter, '%s\n' % header, tag_header)
  155.         
  156.         buffer.insert(iter, msg)
  157.  
  158.     
  159.     def clear_description(self):
  160.         buffer = self.get_buffer()
  161.         buffer.set_text('')
  162.  
  163.  
  164.